// 设置cookie
// document.cookie = "a=1;expires=;path="
// setCookie("a", "123", 1, "/")
需求1:
// 并不是所有浏览器都支持中文，有些浏览器识别中文时会出现乱码
// 解决乱码问题方案为：encodeURIComponent先编码（把中文编译成地址栏能够识别的内容，uri编码、uft8编码）		 decodeURIComponent后解码
// HBuilder自带的服务器，中文会出现bug所以也需要用编码解码这个方案来解决


// 需求2:
// 让cookie存储数据时，支持所有类型的数据，即使用cookie保存数字时，拿出来的数据也是数字。使用cookie保存数组时，拿出来的数据也是数组。
//不管什么数据先把该数据做成JSON对象来处理；
function setCookie(name, value, date, path){
	// 早期
	//var str = name+"="+value;		// str = "a"+"="+"123"		str="a=123"
	
	// 新的代码
	// value 是什么类型的数据是不确定的，value是中文还是英文还是其他符号，也是不确定的
	var json = {
		val : value	//val相当于是给该对象做一个节点，为方便以后的调出 ；无论value是什么类型的数据，都会直接保存到json.val属性上
	}  // json = {val:123}	
	// json是一个对象，想把json保存到cookie中时，需要把json转为字符串	
	// 因为存在中文问题，所以需要把字符串转为uri编码
	var str = name+"="+ encodeURIComponent( JSON.stringify(json) );	// str="a={val:123}"
	
	// 判断用户在使用这个方法时，是否传入了第3个参数
	if( date ){						// date==1
		var dt = new Date();					// dt 是当前时间
		dt.setDate(dt.getDate()+date);			// dt在当前时间的基础上，加了1天
		str += ";expires="+dt.toGMTString();	// str = "a=123;expires=2018/10/31"
	}
	
	// 如果用户在使用这个方法时，是否传入了第4个参数
	if( path ){						// path=="/"
		str += ";path="+path;					// str = "a=123;expires=2018/10/31;path=/"
	}
	
	//console.log("setCookie:", str);
	// 设置cookie
	document.cookie = str;		// document.cookie = "a=123;expires=2018/10/31;path=/"
}




// 获取cookie
function getCookie(name){
	// 因为设置cookie时，用到了编码，所以获取cookie时需要解码
	var str = decodeURIComponent(document.cookie);	// "a=1; b=2; d=4; e=5; c=301"
	//console.log( 'getCookie: ', str );
	var arr = str.split("; ");	// arr = ["a=1","b=2","d=4","e=5","c=301"]
	var len = arr.length;
	for( var i=0; i<len; i++ ){
		// arr[i]  // i=0;   arr[0] === "a=1"
		var txt = arr[i];
		var ind = txt.indexOf("=");	// 返回字符等号在变量txt中的下标
		var cookieName = txt.substring(0, ind);	// cookie名称
		var cookieValue = txt.substring(ind+1); // cookie值
		// 判断循环中所碰到的cookie，是否为我们想要的cookie
		if( cookieName == name ){
			//return cookieValue;
			return JSON.parse(cookieValue).val;//通过val这个节点来调出对应的值；
		}
	}
		
}